package br.com.medvagas.web.mb.p;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.SelectItem;

import org.apache.commons.lang.StringUtils;

import br.com.medvagas.comum.entidade.Municipio;
import br.com.medvagas.comum.entidade.Uf;
import br.com.medvagas.comum.entidade.UsuarioProfissional;
import br.com.medvagas.comum.util.CacheSelectItem;
import br.com.medvagas.comum.util.JSFMensagem;
import br.com.medvagas.comum.util.UtilJSF;
import br.com.medvagas.comum.util.UtilSpring;
import br.com.medvagas.negocio.facade.p.IManterProfissional;

@ManagedBean
@ViewScoped
public class AlterarDadosPessoaisProfissionalMB implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private UsuarioProfissional usuario;
	
	private List<SelectItem> lsUfSigla;
	private List<SelectItem> lsUf;
	private List<SelectItem> lsMunicipio;
	
	public AlterarDadosPessoaisProfissionalMB() {
		UsuarioProfissional upSessao = UtilJSF.getUsuarioProfissionalLogado();

		IManterProfissional mp = (IManterProfissional) UtilSpring.getBean(IManterProfissional.NOME);
		this.usuario = mp.consultarPorId(upSessao.getIdUsuarioProfissional());
		
		lsUfSigla = CacheSelectItem.get(Uf.class.getName() + "siglaUf");
		lsUf = CacheSelectItem.get(Uf.class.getName());
		onchangeEstado(null);
	}
	
	public void onchangeEstado(AjaxBehaviorEvent event) {
		if (StringUtils.isNotEmpty(usuario.getEndereco().getSiglaUf())) {
			lsMunicipio = CacheSelectItem.get(usuario.getEndereco().getSiglaUf() + Municipio.class.getName());
		} else {
			usuario.getEndereco().setCodIbge(null);
			lsMunicipio = Collections.emptyList();
		}
	}
	
	public String salvar() {
		IManterProfissional mp = (IManterProfissional) UtilSpring.getBean(IManterProfissional.NOME);
		mp.alterar(usuario);
		JSFMensagem.addMenssagemInfo("MSG_0015");
		return null;
	}

	public UsuarioProfissional getUsuario() {
		return usuario;
	}

	public void setUsuario(UsuarioProfissional usuario) {
		this.usuario = usuario;
	}

	public List<SelectItem> getLsUfSigla() {
		return lsUfSigla;
	}

	public void setLsUfSigla(List<SelectItem> lsUfSigla) {
		this.lsUfSigla = lsUfSigla;
	}

	public List<SelectItem> getLsUf() {
		return lsUf;
	}

	public void setLsUf(List<SelectItem> lsUf) {
		this.lsUf = lsUf;
	}

	public List<SelectItem> getLsMunicipio() {
		return lsMunicipio;
	}

	public void setLsMunicipio(List<SelectItem> lsMunicipio) {
		this.lsMunicipio = lsMunicipio;
	}
	
}
